package java_DesignPattern.BehavioralPattern.StatePattern.After;

/**
 * 电梯系统上下文类
 */
public class SystemContext {

    //当前电梯状态
    private LiftState liftState;

    //电梯状态常量
    public static final LiftState OPEN = new Open();
    public static final LiftState CLOSE = new Close();
    public static final LiftState RUN = new Run();
    public static final LiftState STOP = new Stop();

     /**
      * 设置电梯状态
      */
    public void setLiftState(LiftState liftState) {
        this.liftState = liftState;
        //更新电梯状态
        this.liftState.setSystemContext(this);
    }

    /**
     * 获取电梯状态
     */
    public LiftState getLiftState() {
        return this.liftState;
    }

    /**
     * 电梯运行
     */
    public void run() {
        this.liftState.run();
    }

     /**
      * 电梯停止
      */
    public void stop() {
        this.liftState.stop();
    }

     /**
      * 电梯开门
      */
    public void open() {
        this.liftState.open();
    }

     /**
      * 电梯关门
      */
    public void close() {
        this.liftState.close();
    }
}
